home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / comm / misc / easytransfer.lzh / EasyTransfer / AmigaSource / EasyAmiga.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-11-11  |  25.7 KB  |  815 lines

  1.  
  2. #include "errcodes.h"
  3.  
  4. #define BIOS 0
  5. #define HARD 1
  6.  
  7. SHORT MaxSpeed[2] = { MAXBIOSSPEED, MAXHARDSPEED};
  8.  
  9. #define min(a,b) (((a) <= (b)) ? (a) : (b))
  10.  
  11. #define FPEN 2
  12. #define DPEN 1
  13.  
  14.  
  15. #define LEFT  0
  16. #define RIGHT 1
  17. #define UP    2
  18. #define DOWN  3
  19.  
  20. #define COMM     1 
  21. #define PARENT   2
  22. #define DELETE   3
  23. #define MKDIR    4
  24. #define CONFIG   5
  25. #define TEXTBIN  5
  26. #define OVRWRITE 6
  27. #define EXIT     7
  28.  
  29. #define PCUP     8
  30. #define PCDOWN   9
  31. #define AMUP    10 
  32. #define AMDOWN  11 
  33. #define PCLEFT  12
  34. #define PCRIGHT 13
  35. #define AMLEFT  14
  36. #define AMRIGHT 15
  37. #define PCPATH  16
  38. #define AMPATH  17
  39. #define PCVPROP 18
  40. #define AMVPROP 19
  41. #define PCHPROP 20
  42. #define AMHPROP 21
  43.  
  44. #define MAXFILENUM 9
  45.  
  46. #define MAXDISPLAY 35
  47.  
  48. #define AM1  31
  49. #define AM2  32
  50. #define AM3  33
  51. #define AM4  34
  52. #define AM5  35
  53. #define AM6  36
  54. #define AM7  37
  55. #define AM8  38
  56. #define AM9  39
  57.  
  58. #define PC1  41
  59. #define PC2  42
  60. #define PC3  43
  61. #define PC4  44
  62. #define PC5  45
  63. #define PC6  46
  64. #define PC7  47
  65. #define PC8  48
  66. #define PC9  49
  67.  
  68. #define DIRSTRGAD 100
  69.  
  70.  
  71. USHORT chip WaitPointerData[]=
  72. {
  73.  0x0000, 0x0000,
  74.  0x0300, 0x0000,
  75.  0x1F9C, 0x0300,
  76.  0x3FFE, 0x1F9C,
  77.  0x63E3, 0x3FFE,
  78.  0x7A3B, 0x3FFE,
  79.  0xF7B7, 0x7FFE,
  80.  0xEF63, 0x7FFE,
  81.  0xE23F, 0x7FFE,
  82.  0x7FFE, 0x3FC0,
  83.  0x3fC0, 0x0F80,
  84.  0x0FB0, 0x0000,
  85.  0x0078, 0x0030,
  86.  0x0030, 0x0000,
  87.  0x0004, 0x0000,
  88.  0x000E, 0x0004,
  89.  0x0004, 0x0000,
  90.  0x0000, 0x0000  
  91. };
  92.  
  93. static UWORD ColourTable[] = {0xaab,0xfff,0x000,0xacf};
  94.  
  95. struct TextAttr MyFont = {
  96.  (STRPTR)"topaz.font",TOPAZ_EIGHTY,FS_NORMAL,FPF_ROMFONT};
  97.  
  98.  
  99.  
  100.  
  101. USHORT Right[] = {
  102. 0x8000,             /* 1000000000000000 */
  103. 0xe000,             /* 1110000000000000 */
  104. 0xf800,             /* 1111100000000000 */
  105. 0xfe00,             /* 1111111000000000 */
  106. 0xf800,             /* 1111100000000000 */
  107. 0xe000,             /* 1110000000000000 */
  108. 0x8000              /* 1000000000000000 */
  109. };
  110.  
  111. USHORT Left[] = {
  112. 0x0200,           /* 0000001000000000 */
  113. 0x0e00,           /* 0000111000000000 */
  114. 0x3e00,           /* 0011111000000000 */
  115. 0xfe00,           /* 1111111000000000 */
  116. 0x3e00,           /* 0011111000000000 */
  117. 0x0e00,           /* 0000111000000000 */
  118. 0x0200            /* 0000001000000000 */
  119. };
  120.  
  121.  
  122. USHORT  Up[] = {
  123. 0x0200,                     /* 0000001000000 */
  124. 0x0700,                     /* 0000011100000 */
  125. 0x0f80,                     /* 0000111110000 */
  126. 0x1fc0,                     /* 0001111111000 */
  127. 0x3fe0,                     /* 0011111111100 */
  128. 0x7ff0                      /* 0111111111110 */
  129. }; 
  130.  
  131. USHORT  Down[] = {
  132. 0x7ff0,                     /* 0111111111110 */
  133. 0x3fe0,                     /* 0011111111100 */
  134. 0x1fc0,                     /* 0001111111000 */
  135. 0x0f80,                     /* 0000111110000 */
  136. 0x0700,                     /* 0000011100000 */
  137. 0x0200                      /* 0000001000000 */
  138. };
  139.  
  140. USHORT *UpData = NULL, *DownData = NULL, *LeftData = NULL, *RightData = NULL;
  141.  
  142. struct Image LeftArrow = {1,84,8,7,1,Left,1,0,NULL};
  143. struct Image RightArrow = {274,84,8,7,1,Right,1,0,(struct Image *)&LeftArrow};
  144.  
  145. struct Image UpArrow = {1,23,13,6,1,Up,1,0,NULL};
  146. struct Image DownArrow = {1,92,13,6,1,Down,1,0,(struct Image *)&UpArrow};
  147.  
  148. struct PropInfo PGHInfo[2] = { {AUTOKNOB|FREEHORIZ,0,0,MAXBODY,0,0,0,0,0,0,0},
  149.                                {AUTOKNOB|FREEHORIZ,0,0,MAXBODY,0,0,0,0,0,0,0} }; 
  150.  
  151. struct PropInfo PGVInfo[2] = { {AUTOKNOB|FREEVERT,0,0,0,MAXBODY,0,0,0,0,0,0},
  152.                                {AUTOKNOB|FREEVERT,0,0,0,MAXBODY,0,0,0,0,0,0} };
  153.  
  154. struct Image VImage[2] = { {0,0,12,67,0,NULL,0x0000,0x0000,NULL}, 
  155.                            {0,0,12,67,0,NULL,0x0000,0x0000,NULL} };
  156.  
  157. struct Image HImage[2] = { {0,0,12,10,0,NULL,0x0000,0x0000,NULL},
  158.                            {0,0,12,10,0,NULL,0x0000,0x0000,NULL} };
  159.  
  160. SHORT BorderPairs[][6] = {
  161.  {0,11, 0,0, 61,0}, /* 0: bool gadgets */
  162.  {61,0, 61,11, 0,11},
  163.  {0,12, 0,0, 62,0},
  164.  {62,0, 62,12, 0,12},
  165.  
  166.  {0,8,0,0,18,0}, /* 4: up & down arrays */
  167.  {18,0,18,8,0,8},
  168.  
  169.  {0,8,0,0,18,0}, /* 6: left & right arrays */
  170.  {18,0,18,8,0,8},
  171.  
  172.  {0,10, 0,0, 286,0},   /* 8: string */
  173.  {286,0, 286,10, 0,10},
  174.  {0,11, 0,0, 288,0},      
  175.  {288,0, 288,11, 0,11},
  176.  
  177.  {0,10, 0,0, 120,0},   /* 12: dir string */
  178.  {120,0, 120,10, 0,10},
  179.  {0,11, 0,0, 122,0},      
  180.  {122,0, 122,11, 0,11},
  181.  
  182.  {316,38, 316,94, 298,94}, /* 16: prop gadgets */
  183.  {315,38, 315,94, 298,94},
  184.  {347,38, 347,94, 329,94}, 
  185.  {346,38, 346,94, 329,94},
  186.  
  187.  {270,107, 270,115, 28,115}, /* 20: horiz prop gadgets */
  188.  {269,107, 269,115, 28,115},
  189.  {618,107, 618,115, 376,115}, 
  190.  {617,107, 617,115, 376,115},
  191.  
  192.  {2,174, 2,130, 275,130}, /* 24: message */
  193.  {275,130, 275,174, 2,174},
  194.  {4,173, 4,131, 273,131},
  195.  {273,131, 273,173, 4,173},
  196.  
  197.  {360,174, 360,130, 638,130}, /* 28: telecommunication */
  198.  {638,130, 638,174, 360,174}, 
  199.  {362,173, 362,131, 636,131},
  200.  {636,131, 636,173, 362,173}, 
  201.  
  202.  { 2,129, 2,119, 275,119}, /* 30 'MESSAGE' text */
  203.  {275,119, 275,129, 2,129},
  204.  
  205.  { 360,129, 360,119, 638,119}, /* 32 'TELECOMMUNICATION' text */
  206.  {638,119, 638,129, 360,129},
  207.  
  208.  { 370,168, 370,158, 628,158}, /* 32 file transfer remainder */
  209.  {628,158, 628,168, 370,168},
  210.  
  211.  {2,103, 2,26, 290,26}, /* 34: PC dir */
  212.  {290,26, 290,103, 2,103},
  213.  
  214.  {350,103,350,26, 638,26}, /* 36: Amiga dir */
  215.  {638,26, 638,103, 350,103} };
  216.  
  217.  
  218.  
  219. struct Border RevBorder[] = {
  220.  /* bool gadgets */ 
  221.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[0],NULL},
  222.  {-2,-1,1,0,JAM1,3,(SHORT *) BorderPairs[1],&RevBorder[0]},
  223.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[2],&RevBorder[1]},
  224.  {-2,-1,1,0,JAM1,3,(SHORT *) BorderPairs[3],&RevBorder[2]},
  225.  
  226.  /* up & down gadgets */
  227.  {0,0,2,0,JAM1,3,(SHORT *) BorderPairs[4],NULL},
  228.  {0,0,1,0,JAM1,3,(SHORT *) BorderPairs[5],&RevBorder[4]},
  229.  
  230.  /* left & right gadgets */
  231.  {0,0,2,0,JAM1,3,(SHORT *) BorderPairs[6],NULL},
  232.  {0,0,1,0,JAM1,3,(SHORT *) BorderPairs[7],&RevBorder[6]}};
  233.  
  234. struct Border Borders[] = {
  235.  /* bool gadgets */
  236.  {-2,-1,1,0,JAM1,3,(SHORT *) BorderPairs[0],NULL},
  237.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[1],&Borders[0]}, 
  238.  {-3,-2,2,0,JAM1,3,(SHORT *) BorderPairs[2],&Borders[1]},
  239.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[3],&Borders[2]},
  240.  
  241.  /* up & down gadgets */
  242.  {0,0,1,0,JAM1,3,(SHORT *) BorderPairs[4],NULL},
  243.  {0,0,2,0,JAM1,3,(SHORT *) BorderPairs[5],&Borders[4]},
  244.  
  245.  /* left & right gadgets */
  246.  {0,0,1,0,JAM1,3,(SHORT *) BorderPairs[6],NULL},
  247.  {0,0,2,0,JAM1,3,(SHORT *) BorderPairs[7],&Borders[6]},
  248.  
  249.  /* string gadgets */
  250.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[8],NULL},
  251.  {-2,-1,1,0,JAM1,3,(SHORT *) BorderPairs[9],&Borders[8]},
  252.  {-3,-2,1,0,JAM1,3,(SHORT *) BorderPairs[10],&Borders[9]},
  253.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[11],&Borders[10]},
  254.  
  255.  /* dir string gadgets */
  256.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[12],NULL},
  257.  {-2,-1,1,0,JAM1,3,(SHORT *) BorderPairs[13],&Borders[12]},
  258.  {-3,-2,1,0,JAM1,3,(SHORT *) BorderPairs[14],&Borders[13]},
  259.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[15],&Borders[14]},
  260.  
  261.  /* prop gadgets */
  262.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[16],NULL},
  263.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[17],&Borders[16]},
  264.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[18],&Borders[17]},
  265.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[19],&Borders[18]},
  266.  
  267.  /* prop gadgets */
  268.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[20],&Borders[19]},
  269.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[21],&Borders[20]},
  270.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[22],&Borders[21]},
  271.  {-2,-1,2,0,JAM1,3,(SHORT *) BorderPairs[23],&Borders[22]},
  272.  
  273.  /* message */
  274.  {0,0,1,0,JAM1,3,(SHORT *) BorderPairs[24],&Borders[23]},
  275.  {0,0,2,0,JAM1,3,(SHORT *) BorderPairs[25],&Borders[24]},
  276.  {0,0,2,0,JAM1,3,(SHORT *) BorderPairs[26],&Borders[25]},
  277.  {0,0,1,0,JAM1,3,(SHORT *) BorderPairs[27],&Borders[26]},
  278.  
  279.  /* telecommunication */
  280.  {0,0,1,0,JAM1,3,(SHORT *) BorderPairs[28],&Borders[27]},
  281.  {0,0,2,0,JAM1,3,(SHORT *) BorderPairs[29],&Borders[28]},
  282.  {0,0,2,0,JAM1,3,(SHORT *) BorderPairs[30],&Borders[29]},
  283.  {0,0,1,0,JAM1,3,(SHORT *) BorderPairs[31],&Borders[30]},
  284.  
  285.  /* MESSAGE text */
  286.  {0,0,1,0,JAM1,3,(SHORT *) BorderPairs[32],&Borders[31]},
  287.  {0,0,2,0,JAM1,3,(SHORT *) BorderPairs[33],&Borders[32]},
  288.  
  289.  /* TELECOMMUNICATION text */
  290.  {0,0,1,0,JAM1,3,(SHORT *) BorderPairs[34],&Borders[33]},
  291.  {0,0,2,0,JAM1,3,(SHORT *) BorderPairs[35],&Borders[34]},
  292.  
  293.  /* file transfer remainder  */
  294.  {0,0,2,0,JAM1,3,(SHORT *) BorderPairs[36],&Borders[35]},
  295.  {0,0,1,0,JAM1,3,(SHORT *) BorderPairs[37],&Borders[36]},
  296.  
  297.  /* dirs */
  298.  {0,0,1,0,JAM1,3,(SHORT *) BorderPairs[38],&Borders[37]},
  299.  {0,0,2,0,JAM1,3,(SHORT *) BorderPairs[39],&Borders[38]},
  300.  {0,0,1,0,JAM1,3,(SHORT *) BorderPairs[40],&Borders[39]},
  301.  {0,0,2,0,JAM1,3,(SHORT *) BorderPairs[41],&Borders[40]} }; 
  302.  
  303. struct IntuiText Texts[] = { 
  304.  {2,0,JAM2,2,1,&MyFont,"CONNECT",NULL}, /*  0 */
  305.  {2,0,JAM2,3,1,&MyFont," SEND  ",NULL}, /*  1 */
  306.  {2,0,JAM2,2,1,&MyFont,"RECEIVE",NULL}, /*  2 */
  307.  {2,0,JAM2,5,1,&MyFont,"PARENT",NULL},  /*  3 */
  308.  {2,0,JAM2,5,1,&MyFont,"DELETE",NULL},  /*  4 */
  309.  {2,0,JAM2,9,1,&MyFont,"MKDIR",NULL},   /*  5 */
  310.  {2,0,JAM2,5,1,&MyFont," TEXT ",NULL},  /*  6 */
  311.  {2,0,JAM2,5,1,&MyFont,"BINARY",NULL},  /*  7 */
  312.  {2,0,JAM2,5,1,&MyFont,"CONFIG",NULL},  /*  8 */
  313.  {2,0,JAM2,2,1,&MyFont,"PROTECT",NULL}, /*  9 */
  314.  {2,0,JAM2,2,1,&MyFont,"OVR WRT",NULL}, /* 10 */
  315.  {2,0,JAM2,13,1,&MyFont,"EXIT",NULL},   /* 11 */
  316.  {2,0,JAM2,1,1,&MyFont,"MESSAGE",NULL}, /* 12 */
  317.  {2,0,JAM2,1,1,&MyFont,"TELECOMMUNICATION",NULL}  /* 13 */
  318. };  
  319.  
  320. char String[2][MAXFILENUM][MAXDISPLAY + 1];
  321.  
  322. struct IntuiText SelTexts[2][MAXFILENUM] = {
  323.  {
  324.   {FPEN,0,JAM2,0,0,&MyFont,String[0][0],NULL}, /* 0 */
  325.   {FPEN,0,JAM2,0,0,&MyFont,String[0][1],NULL}, /* 1 */
  326.   {FPEN,0,JAM2,0,0,&MyFont,String[0][2],NULL}, /* 2 */
  327.   {FPEN,0,JAM2,0,0,&MyFont,String[0][3],NULL}, /* 3 */
  328.   {FPEN,0,JAM2,0,0,&MyFont,String[0][4],NULL}, /* 4 */
  329.   {FPEN,0,JAM2,0,0,&MyFont,String[0][5],NULL}, /* 5 */
  330.   {FPEN,0,JAM2,0,0,&MyFont,String[0][6],NULL}, /* 6 */
  331.   {FPEN,0,JAM2,0,0,&MyFont,String[0][7],NULL}, /* 7 */
  332.   {FPEN,0,JAM2,0,0,&MyFont,String[0][8],NULL}  /* 8 */
  333.  },
  334.  {
  335.   {FPEN,0,JAM2,0,0,&MyFont,String[1][0],NULL}, /* 0 */
  336.   {FPEN,0,JAM2,0,0,&MyFont,String[1][1],NULL}, /* 1 */
  337.   {FPEN,0,JAM2,0,0,&MyFont,String[1][2],NULL}, /* 2 */
  338.   {FPEN,0,JAM2,0,0,&MyFont,String[1][3],NULL}, /* 3 */
  339.   {FPEN,0,JAM2,0,0,&MyFont,String[1][4],NULL}, /* 4 */
  340.   {FPEN,0,JAM2,0,0,&MyFont,String[1][5],NULL}, /* 5 */
  341.   {FPEN,0,JAM2,0,0,&MyFont,String[1][6],NULL}, /* 6 */
  342.   {FPEN,0,JAM2,0,0,&MyFont,String[1][7],NULL}, /* 7 */
  343.   {FPEN,0,JAM2,0,0,&MyFont,String[1][8],NULL}  /* 8 */
  344.  }
  345. };
  346.  
  347. USHORT DirLen[2] = { MAXPCINFOLEN, MAXAMINFOLEN };
  348.  
  349. char Wheel[2][4]; 
  350.  
  351. struct IntuiText TransferWheel[] = 
  352. {
  353.  {1,0,JAM2,595,133,&MyFont,Wheel[0],NULL},
  354.  {1,0,JAM2,446,133,&MyFont,Wheel[1],NULL}
  355. };
  356.  
  357. char TransFileName[35];
  358.  
  359. struct IntuiText TransFileText = 
  360.          {1,0,JAM2,380,142,&MyFont,TransFileName,NULL};
  361.  
  362. #define MAXMESSAGE 4
  363.  
  364. char  MTextAddr[MAXMESSAGE][33] = {{NULL}, {NULL}, {NULL}, {NULL}};
  365.  
  366. struct IntuiText MessIntuiText[] = {
  367.  {1,0,JAM2,0,134,&MyFont,MTextAddr[0],NULL},  /* 0 */
  368.  {1,0,JAM2,0,144,&MyFont,MTextAddr[1],NULL},  /* 1 */
  369.  {1,0,JAM2,0,154,&MyFont,MTextAddr[2],NULL},  /* 2 */
  370.  {1,0,JAM2,0,164,&MyFont,MTextAddr[3],NULL}   /* 3 */
  371. }; 
  372.  
  373.  
  374. char *MessageT[] = {
  375.  "No Errors Encountered           ",
  376.  "Can Not Open Serial Device      ",
  377.  "Can Not Create IORequest        ",
  378.  "Can Not Create Message Port     ",
  379.  "Serial Device Is Not Open       ",
  380.  "Can Not Write The Receiving File",
  381.  "Synchronization Lost            ",
  382.  "User Break Encountered          ",
  383.  "Can Not Create Receiving File   ",
  384.  "Receiving File Already Exists   ",
  385.  
  386.  "File Already Exists On Server   ",
  387.  "Can Not Get File Information    ",
  388.  "Can Not Open File To Send       ",
  389.  "Server Is Not Responding        ",
  390.  "Can't Open Server Source File   ",
  391.  "Can't Open Server Target File   ",
  392.  "Can Not Setup Timer             ",
  393.  "Can Not Setup Serial Port       ",
  394.  "Can Not Find a suitable Speed   ",
  395.  "Error Hadling Directory         ",
  396.  "MKDIR On Workstation Failed     ",
  397.  "CHDIR On Workstation Failed     ",
  398.  "Can Not Delete Workstation File ",
  399.  "Can Not Delete Workstation Dir  ",
  400.  
  401.  "CHDIR On Server Failed          ",
  402.  "MKDIR On Server Failed          ",
  403.  "RMDIR On Server Failed          ",
  404.  "Can Not Delete Server File      ",
  405.  "Can Not Read The File To Send   ",
  406.  
  407.  "Enter Dir Name in String Gadget ",
  408.  "Operation Canceled              ",
  409.  "Operation Successful            ",
  410.  "Not Enough Memory               ",
  411.  "Trying 000000 bps               ",
  412.  "Server Rejected the speed       ",
  413.  "Server Agreed With The Speed    ",
  414.  "Amiga Rejected The speed        ",
  415.  "Amiga Agreed With The Speed     ",
  416.  "Agreed Upon 000000 bps          ",
  417.  "Couldn't Read Valid Config File ",
  418.  "Could Not Write Config File     ",
  419.  "BLANK ERROR!!!!!!!!!!!!!!!!!!!! ",
  420.  
  421.  "Receive Operation Failed        ",
  422.  "Informing The Server Of Quit    ",
  423.  "No Response Over Link           ",
  424.  "Bad CheckSum In Received Packet "
  425. };
  426.  
  427. #define BUFFLEN 255
  428.  
  429. UBYTE PCUndoBuff[BUFFLEN],AMUndoBuff[BUFFLEN],DirUndoBuff[BUFFLEN];
  430. UBYTE PCBuff[BUFFLEN] = {0}, AMBuff[BUFFLEN] = {0}, DirBuff[BUFFLEN] = {0};
  431.  
  432. struct StringInfo GadInfo[2] = {
  433.  {PCBuff,PCUndoBuff,0,BUFFLEN,0,0,0,0,0,0,0,0,NULL},
  434.  {AMBuff,AMUndoBuff,0,BUFFLEN,0,0,0,0,0,0,0,0,NULL} };
  435.  
  436. struct StringInfo DirGadInfo = 
  437.  {DirBuff,DirUndoBuff,0,BUFFLEN,0,0,0,0,0,0,0,0,NULL};
  438.  
  439. struct Gadget Gads[] = {
  440.  { &Gads[1],290,125,60,10,GADGHIMAGE,
  441.    RELVERIFY,BOOLGADGET,(APTR)&Borders[3],(APTR)&RevBorder[3],
  442.    &Texts[0],NULL,NULL,COMM,NULL},
  443.  
  444.  { &Gads[2],290,140,60,10,GADGHIMAGE,
  445.    RELVERIFY,BOOLGADGET,(APTR)&Borders[3],(APTR)&RevBorder[3],
  446.    &Texts[3],NULL,NULL,PARENT,NULL},
  447.  
  448.  { &Gads[3],290,155,60,10,GADGHIMAGE,
  449.    RELVERIFY,BOOLGADGET,(APTR)&Borders[3],(APTR)&RevBorder[3],
  450.    &Texts[4],NULL,NULL,DELETE,NULL},
  451.  
  452.  { &Gads[4],290,170,60,10,GADGHIMAGE,
  453.    RELVERIFY,BOOLGADGET,(APTR)&Borders[3],(APTR)&RevBorder[3],
  454.    &Texts[5],NULL,NULL,MKDIR,NULL},
  455.  
  456.  { &Gads[6],493,185,60,10,GADGHIMAGE,
  457.    RELVERIFY,BOOLGADGET,(APTR)&Borders[3],(APTR)&RevBorder[3],
  458.    &Texts[8],NULL,NULL,CONFIG,NULL},
  459.  
  460.  { &Gads[6],423,185,60,10,GADGHIMAGE,
  461.    RELVERIFY,BOOLGADGET,(APTR)&Borders[3],(APTR)&RevBorder[3],
  462.    &Texts[9],NULL,NULL,OVRWRITE,NULL},
  463.  
  464.  { &Gads[7],573,185,60,10,GADGHIMAGE,
  465.    RELVERIFY,BOOLGADGET,(APTR)&Borders[3],(APTR)&RevBorder[3],
  466.    &Texts[11],NULL,NULL,EXIT,NULL},
  467.  
  468.  /* up & down gadgets */
  469.   { &Gads[8],295,27,18,8,GADGHIMAGE,GADGIMMEDIATE|RELVERIFY,
  470.     BOOLGADGET,(APTR)&Borders[5],(APTR)&RevBorder[5],NULL,NULL,NULL,PCUP,NULL},
  471.  
  472.  { &Gads[9],295,95,18,8,GADGHIMAGE,GADGIMMEDIATE|RELVERIFY,
  473.    BOOLGADGET,(APTR)&Borders[5],(APTR)&RevBorder[5],NULL,NULL,NULL,PCDOWN,NULL},
  474.  
  475.  { &Gads[10],326,27,18,8,GADGHIMAGE,GADGIMMEDIATE|RELVERIFY,
  476.    BOOLGADGET,(APTR)&Borders[5],(APTR)&RevBorder[5],NULL,NULL,NULL,AMUP,NULL},
  477.  
  478.  { &Gads[11],326,95,18,8,GADGHIMAGE,GADGIMMEDIATE|RELVERIFY,
  479.    BOOLGADGET,(APTR)&Borders[5],(APTR)&RevBorder[5],NULL,NULL,NULL,AMDOWN,NULL},
  480.  
  481.  
  482.  /* left & right gadgets */
  483.   { &Gads[12],2,106,18,8,GADGHIMAGE,GADGIMMEDIATE|RELVERIFY,
  484.    BOOLGADGET,(APTR)&Borders[7],(APTR)&RevBorder[7],NULL,NULL,NULL,PCLEFT,NULL},
  485.  
  486.  { &Gads[13],271,106,18,8,GADGHIMAGE,GADGIMMEDIATE|RELVERIFY,
  487.    BOOLGADGET,(APTR)&Borders[7],(APTR)&RevBorder[7],NULL,NULL,NULL,PCRIGHT,NULL},
  488.  
  489.  { &Gads[14],351,106,18,8,GADGHIMAGE,GADGIMMEDIATE|RELVERIFY,
  490.    BOOLGADGET,(APTR)&Borders[7],(APTR)&RevBorder[7],NULL,NULL,NULL,AMLEFT,NULL},
  491.  
  492.  { &Gads[15],620,106,18,8,GADGHIMAGE,GADGIMMEDIATE|RELVERIFY,
  493.    BOOLGADGET,(APTR)&Borders[7],(APTR)&RevBorder[7],NULL,NULL,NULL,AMRIGHT,NULL},
  494.  
  495.  /* string gadgets */
  496.  
  497.  { &Gads[16],4,15,286,9,NULL,RELVERIFY,STRGADGET,
  498.   (APTR)&Borders[11],NULL,NULL,NULL,(APTR)&GadInfo[PC],PCPATH,NULL},
  499.  
  500.  { &Gads[17],352,15,286,9,NULL,RELVERIFY,STRGADGET,
  501.   (APTR)&Borders[11],NULL,NULL,NULL,(APTR)&GadInfo[AM],AMPATH,NULL},
  502.  
  503.  /* prop gadgets */
  504.  
  505.  { &Gads[18],295,37,20,57,NULL,RELVERIFY,PROPGADGET,
  506.    (APTR)&VImage[PC],NULL,NULL,NULL,(APTR)&PGVInfo[PC],PCVPROP,NULL},
  507.  
  508.  { &Gads[19],326,37,20,57,NULL,RELVERIFY,PROPGADGET,
  509.   (APTR)&VImage[AM],NULL,NULL,NULL,(APTR)&PGVInfo[AM],AMVPROP,NULL},
  510.  
  511.  { &Gads[20],24,106,245,9,NULL,RELVERIFY,PROPGADGET,
  512.   (APTR)&HImage[PC],NULL,NULL,NULL,(APTR)&PGHInfo[PC],PCHPROP,NULL},
  513.  
  514.  { NULL,372,106,245,9,NULL,RELVERIFY,PROPGADGET,
  515.   (APTR)&HImage[AM],NULL,NULL,NULL,(APTR)&PGHInfo[AM],AMHPROP,NULL} };
  516.  
  517.  
  518. struct Gadget AMSelect[] = {
  519.  { &AMSelect[1],354,29,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  520.   BOOLGADGET,NULL,NULL,&SelTexts[AM][0],NULL,NULL,AM1,NULL},
  521.  
  522.  { &AMSelect[2],354,37,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  523.   BOOLGADGET,NULL,NULL,&SelTexts[AM][1],NULL,NULL,AM2,NULL},
  524.  
  525.  {&AMSelect[3],354,45,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  526.   BOOLGADGET,NULL,NULL,&SelTexts[AM][2],NULL,NULL,AM3,NULL},
  527.  
  528.  {&AMSelect[4],354,53,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  529.   BOOLGADGET,NULL,NULL,&SelTexts[AM][3],NULL,NULL,AM4,NULL},
  530.  
  531.  {&AMSelect[5],354,61,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  532.   BOOLGADGET,NULL,NULL,&SelTexts[AM][4],NULL,NULL,AM5,NULL},
  533.  
  534.  {&AMSelect[6],354,69,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  535.   BOOLGADGET,NULL,NULL,&SelTexts[AM][5],NULL,NULL,AM6,NULL},
  536.  
  537.  {&AMSelect[7],354,77,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  538.   BOOLGADGET,NULL,NULL,&SelTexts[AM][6],NULL,NULL,AM7,NULL},
  539.  
  540.  {&AMSelect[8],354,85,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  541.   BOOLGADGET,NULL,NULL,&SelTexts[AM][7],NULL,NULL,AM8,NULL},
  542.  
  543.  {NULL,354,93,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  544.   BOOLGADGET,NULL,NULL,&SelTexts[AM][8],NULL,NULL,AM9,NULL}
  545. };
  546.  
  547. struct Gadget PCSelect[] = {
  548.  {&PCSelect[1],6,29,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  549.   BOOLGADGET,NULL,NULL,&SelTexts[PC][0],NULL,NULL,PC1,NULL},
  550.  
  551.  {&PCSelect[2],6,37,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  552.   BOOLGADGET,NULL,NULL,&SelTexts[PC][1],NULL,NULL,PC2,NULL},
  553.  
  554.  {&PCSelect[3],6,45,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  555.   BOOLGADGET,NULL,NULL,&SelTexts[PC][2],NULL,NULL,PC3,NULL},
  556.  
  557.  {&PCSelect[4],6,53,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  558.   BOOLGADGET,NULL,NULL,&SelTexts[PC][3],NULL,NULL,PC4,NULL},
  559.  
  560.  {&PCSelect[5],6,61,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  561.   BOOLGADGET,NULL,NULL,&SelTexts[PC][4],NULL,NULL,PC5,NULL},
  562.  
  563.  {&PCSelect[6],6,69,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  564.   BOOLGADGET,NULL,NULL,&SelTexts[PC][5],NULL,NULL,PC6,NULL},
  565.  
  566.  {&PCSelect[7],6,77,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  567.   BOOLGADGET,NULL,NULL,&SelTexts[PC][6],NULL,NULL,PC7,NULL},
  568.  
  569.  {&PCSelect[8],6,85,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  570.   BOOLGADGET,NULL,NULL,&SelTexts[PC][7],NULL,NULL,PC8,NULL},
  571.  
  572.  {NULL,6,93,280,8,GADGHCOMP,TOGGLESELECT|RELVERIFY,
  573.   BOOLGADGET,NULL,NULL,&SelTexts[PC][8],NULL,NULL,PC9,NULL}
  574. };
  575.  
  576.  
  577. struct Gadget DirGad =  
  578.  { NULL,290,186,119,9,SELECTED,RELVERIFY,STRGADGET,
  579.  (APTR)&Borders[15],NULL,NULL,NULL,(APTR)&DirGadInfo,DIRSTRGAD,NULL};
  580.  
  581.  
  582. struct NewScreen MyScreen = {0,0,640,200,2,0,1,HIRES,CUSTOMSCREEN,NULL,
  583. "        Server                Easy Transfer V2.0ß            Amiga",
  584. NULL,NULL};
  585.  
  586. struct NewWindow MyWindow = {0,0,640,200,0,1,GADGETDOWN|GADGETUP|RAWKEY,
  587.        RMBTRAP|SIMPLE_REFRESH|BACKDROP|BORDERLESS|ACTIVATE,&Gads[0],NULL,
  588.        NULL,NULL,NULL,5,5,640,200,CUSTOMSCREEN };
  589.  
  590.  
  591.  
  592. /* config information */
  593.  
  594. struct IntuiText ConfigTexts[] = {
  595.  {2,0,JAM2,23,2,&MyFont,"OK",NULL},   /* 0  */ 
  596.  {2,0,JAM2,15,2,&MyFont,"SAVE",NULL},   /* 1  */
  597.  {2,0,JAM2,7,2,&MyFont,"CANCEL",NULL},   /* 2  */
  598.  {1,0,JAM2,6,2,&MyFont,"USING BIOS",NULL}, /* 3 */
  599.  {1,0,JAM2,6,2,&MyFont," DIRECTLY ",NULL}, /* 4 */
  600.  
  601.  {2,0,JAM2,10,25,&MyFont,"Serial Port Name:",NULL},
  602.  {2,0,JAM2,10,45,&MyFont,"Serial Port Unit:",&ConfigTexts[5]},
  603.  {2,0,JAM2,10,65,&MyFont,
  604.                      "Wait For A Reply For",&ConfigTexts[6]},
  605.  
  606.  {2,0,JAM2,205,65,&MyFont,"Seconds",&ConfigTexts[7]},
  607.  {2,0,JAM2,10,85,&MyFont,
  608.        "Try Communication Speeds Starting At:",&ConfigTexts[8]},
  609.  {2,0,JAM2,10,105,&MyFont,
  610.                    "Program Serial Port Hardware On Server",&ConfigTexts[9]},
  611.  {2,0,JAM2,10,125,&MyFont,
  612.                    "Check Link Availability Every",&ConfigTexts[10]},
  613.  {2,0,JAM2,280,125,&MyFont,"Seconds",&ConfigTexts[11]},
  614.  {2,0,JAM2,10,145,&MyFont,
  615.                    "On CheckSum Errors, Retransmit Packets",&ConfigTexts[12]},
  616.  {2,0,JAM2,350,145,&MyFont,"Times",&ConfigTexts[13]}
  617.  
  618. };
  619.  
  620. struct IntuiText SpeedTexts[] = { 
  621.  {1,0,JAM2,1,1,&MyFont,"   300 bps",NULL},   /* 0  */
  622.  {1,0,JAM2,1,1,&MyFont,"   600 bps",NULL},   /* 1  */
  623.  {1,0,JAM2,1,1,&MyFont,"  1200 bps",NULL},    /* 2  */
  624.  {1,0,JAM2,1,1,&MyFont,"  2400 bps",NULL},   /* 3  */
  625.  {1,0,JAM2,1,1,&MyFont,"  4800 bps",NULL},   /* 4  */
  626.  {1,0,JAM2,1,1,&MyFont,"  9600 bps",NULL},  /* 5  */
  627.  {1,0,JAM2,1,1,&MyFont," 19200 bps",NULL},  /* 6  */
  628.  {1,0,JAM2,1,1,&MyFont," 38400 bps",NULL},  /* 7  */
  629.  {1,0,JAM2,1,1,&MyFont," 57600 bps",NULL},  /* 8  */
  630.  {1,0,JAM2,1,1,&MyFont,"115200 bps",NULL} };  /* 9  */
  631.  
  632. SHORT ConfigBorderPairs[][6] = {
  633.  {0,8,0,0,18,0}, /* 0: left & right arrays */
  634.  {18,0,18,8,0,8},
  635.  
  636.  {0,11, 0,0, 61,0}, /* 2: bool gadget */
  637.  {61,0, 61,11, 0,11},
  638.  
  639.  {0,10, 0,0, 91,0}, /* 4: bios gadget */
  640.  {91,0, 91,10, 0,10},
  641.  
  642.  {0,9, 0,0, 280,0}, /* 6: big string */
  643.  {280,0, 280,9, 0,9},
  644.  
  645.  {0,9, 0,0, 27,0,}, /* 8: small string */
  646.  {27,0, 27,9, 0,9},
  647.  
  648.  {0,9, 0,0, 85,0}, /* 10: speed */
  649.  {85,0, 85,9, 0,9}
  650. };
  651.  
  652.  
  653. struct Border ConfigRevBorders[] = {
  654.  /* left & right gadgets */
  655.  {0,0,2,0,JAM1,3,(SHORT *) ConfigBorderPairs[0],NULL},
  656.  {0,0,1,0,JAM1,3,(SHORT *) ConfigBorderPairs[1],&ConfigRevBorders[0]}, 
  657.  
  658.  {0,0,2,0,JAM1,3,(SHORT *) ConfigBorderPairs[2],NULL},
  659.  {0,0,1,0,JAM1,3,(SHORT *) ConfigBorderPairs[3],&ConfigRevBorders[2]}, 
  660.  
  661.  {0,0,2,0,JAM1,3,(SHORT *) ConfigBorderPairs[4],NULL},
  662.  {0,0,1,0,JAM1,3,(SHORT *) ConfigBorderPairs[5],&ConfigRevBorders[4]},
  663.  
  664. };
  665.  
  666.  
  667. struct Border ConfigBorders[] = {
  668.  /* left & right gadgets */
  669.  {0,0,1,0,JAM1,3,(SHORT *) ConfigBorderPairs[0],NULL},
  670.  {0,0,2,0,JAM1,3,(SHORT *) ConfigBorderPairs[1],&ConfigBorders[0]}, 
  671.  
  672.  {0,0,1,0,JAM1,3,(SHORT *) ConfigBorderPairs[2],NULL},
  673.  {0,0,2,0,JAM1,3,(SHORT *) ConfigBorderPairs[3],&ConfigBorders[2]}, 
  674.  
  675.  {0,0,1,0,JAM1,3,(SHORT *) ConfigBorderPairs[4],NULL},
  676.  {0,0,2,0,JAM1,3,(SHORT *) ConfigBorderPairs[5],&ConfigBorders[4]},
  677.  
  678.  /* big string gadget */
  679.  {-2,-1,2,0,JAM1,3,(SHORT *) ConfigBorderPairs[6],NULL},
  680.  {-2,-1,1,0,JAM1,3,(SHORT *) ConfigBorderPairs[7],&ConfigBorders[6]},
  681.  
  682.  /* small string gadget */
  683.  {-2,-1,2,0,JAM1,3,(SHORT *) ConfigBorderPairs[8],NULL},
  684.  {-2,-1,1,0,JAM1,3,(SHORT *) ConfigBorderPairs[9],&ConfigBorders[8]},
  685.  
  686.  {0,0,2,0,JAM1,3,(SHORT *) ConfigBorderPairs[10],NULL},
  687.  {0,0,1,0,JAM1,3,(SHORT *) ConfigBorderPairs[11],&ConfigBorders[10]},
  688.  
  689. };
  690. #define SPEEDL   0
  691. #define SPEEDR   1
  692. #define USEBIOS  2
  693. #define SERNAME  3
  694. #define UNIT     4
  695. #define DELAY    5
  696. #define CHECK    6
  697. #define CHECKSUM 7
  698.  
  699. #define OK       8
  700. #define SAVE     9
  701. #define CANCEL  10
  702.  
  703.  
  704. #define SERNAMELEN 34
  705. #define UNITLEN     3
  706. #define DELAYLEN    3
  707. #define CHECKLEN    3
  708. #define CHECKSUMLEN 3
  709.  
  710. UBYTE SerNameUndoBuff[SERNAMELEN + 1],UnitUndoBuff[UNITLEN + 1];
  711. UBYTE DelayUndoBuff[DELAYLEN + 1];
  712. UBYTE SerNameBuff[SERNAMELEN + 1], UnitBuff[UNITLEN + 1];
  713. UBYTE DelayBuff[DELAYLEN + 1];
  714. UBYTE CheckBuff[CHECKLEN + 1],CheckUndoBuff[CHECKLEN + 1];
  715. UBYTE CheckSumBuff[CHECKSUMLEN + 1],CheckSumUndoBuff[CHECKSUMLEN + 1];
  716.  
  717. struct StringInfo SerNameInfo = 
  718.     {SerNameBuff,SerNameUndoBuff,0,SERNAMELEN,0,0,0,0,0,0,0,0,NULL};
  719. struct StringInfo UnitInfo = 
  720.     {UnitBuff,UnitUndoBuff,0,UNITLEN,0,0,0,0,0,0,0,0,NULL};
  721. struct StringInfo DelayInfo = 
  722.     {DelayBuff,DelayUndoBuff,0,DELAYLEN,0,0,0,0,0,0,0,0,NULL};
  723. struct StringInfo CheckInfo = 
  724.     {CheckBuff,CheckUndoBuff,0,CHECKLEN,0,0,0,0,0,0,0,0,NULL};
  725. struct StringInfo CheckSumInfo = 
  726.     {CheckSumBuff,CheckSumUndoBuff,0,CHECKSUMLEN,0,0,0,0,0,0,0,0,NULL};
  727.  
  728.  
  729. struct Gadget ConfigGads[] = {
  730.  {&ConfigGads[1],307,84,18,8,GADGHIMAGE,GADGIMMEDIATE|RELVERIFY,
  731.   BOOLGADGET,(APTR)&ConfigBorders[1],(APTR)&ConfigRevBorders[1],
  732.   NULL,NULL,NULL,SPEEDL,NULL},
  733.  
  734.  {&ConfigGads[2],420,84,18,8,GADGHIMAGE,GADGIMMEDIATE|RELVERIFY,
  735.   BOOLGADGET,(APTR)&ConfigBorders[1],(APTR)&ConfigRevBorders[1],
  736.   NULL,NULL,NULL,SPEEDR,NULL},
  737.  
  738.  {&ConfigGads[3],320,103,90,10,GADGHIMAGE,
  739.    RELVERIFY,BOOLGADGET,(APTR)&ConfigBorders[5],(APTR)&ConfigRevBorders[5],
  740.    NULL,NULL,NULL,USEBIOS,NULL},
  741.  
  742.  {&ConfigGads[4],50,180,60,10,GADGHIMAGE,
  743.    RELVERIFY,BOOLGADGET,(APTR)&ConfigBorders[3],(APTR)&ConfigRevBorders[3],
  744.    &ConfigTexts[0],NULL,NULL,OK,NULL},
  745.  
  746.  {&ConfigGads[5],290,180,60,10,GADGHIMAGE,
  747.    RELVERIFY,BOOLGADGET,(APTR)&ConfigBorders[3],(APTR)&ConfigRevBorders[3],
  748.    &ConfigTexts[1],NULL,NULL,SAVE,NULL},
  749.  
  750.  {&ConfigGads[6],510,180,60,10,GADGHIMAGE,
  751.    RELVERIFY,BOOLGADGET,(APTR)&ConfigBorders[3],(APTR)&ConfigRevBorders[3],
  752.    &ConfigTexts[2],NULL,NULL,CANCEL,NULL},
  753.  
  754.  /* string gadgets */
  755.  
  756.  {&ConfigGads[7],150,25,286,9,NULL,RELVERIFY,STRGADGET,
  757.  (APTR)&ConfigBorders[7],NULL,NULL,NULL,(APTR)&SerNameInfo,SERNAME,NULL},
  758.  
  759.  {&ConfigGads[8],150,45,28,9,NULL,RELVERIFY|LONGINT,STRGADGET,
  760.  (APTR)&ConfigBorders[9],NULL,NULL,NULL,(APTR)&UnitInfo,UNIT,NULL},
  761.  
  762.  {&ConfigGads[9],175,65,28,9,NULL,RELVERIFY|LONGINT,STRGADGET,
  763.  (APTR)&ConfigBorders[9],NULL,NULL,NULL,(APTR)&DelayInfo,DELAY,NULL},
  764.  
  765.  {&ConfigGads[10],250,125,28,9,NULL,RELVERIFY|LONGINT,STRGADGET,
  766.  (APTR)&ConfigBorders[9],NULL,NULL,NULL,(APTR)&CheckInfo,CHECK,NULL},
  767.  
  768.  {NULL,320,145,28,9,NULL,RELVERIFY|LONGINT,STRGADGET,
  769.  (APTR)&ConfigBorders[9],NULL,NULL,NULL,(APTR)&CheckSumInfo,CHECKSUM,NULL} };
  770.  
  771.  
  772. struct NewWindow ConfigWindow = {0,0,640,200,0,1,GADGETUP,
  773.        SIMPLE_REFRESH|WINDOWDRAG|ACTIVATE,&ConfigGads[0],NULL,
  774.        "EasyTransfer Configuration Window",NULL,NULL,5,5,640,200,
  775.        CUSTOMSCREEN };
  776.  
  777.  
  778. UWORD chip NameData[132] =
  779. {
  780.  0x0FE0,0xF870,0x0000,0x0000,0x0000,0x0000,
  781.  0x001F,0x0E00,0x0000,0x1C00,0x0007,0x0000,
  782.  0x3018,0x70C0,0x0000,0x0000,0x0000,0x0000,
  783.  0x000E,0x1800,0x0000,0x1C00,0x0007,0x0000,
  784.  0x600C,0x7180,0x0000,0x0000,0x0000,0x0000,
  785.  0x000E,0x3000,0x0000,0x0000,0x0000,0x0000,
  786.  0xC3C6,0x7300,0x0000,0x0000,0x0000,0x0000,
  787.  0x000E,0x6000,0x0000,0x0000,0x0000,0x0000,
  788.  0xC666,0x7601,0xFC6F,0x3F1B,0xF83F,0x8EF8,
  789.  0x000E,0xC03F,0x8DFC,0x3C6F,0x3F0F,0x0000,
  790.  0xCE06,0x7C06,0x0E38,0xE38F,0x0CC1,0xC78E,
  791.  0x000F,0x80C1,0xC786,0x1C38,0xE387,0x0000,
  792.  0xCE06,0x7E00,0x0E38,0xE38E,0x0E01,0xC707,
  793.  0x000F,0xC001,0xC707,0x1C38,0xE387,0x0000,
  794.  0xC666,0x7701,0xFE38,0xE38E,0x003F,0xC707,
  795.  0x000E,0xE03F,0xC700,0x1C38,0xE387,0x0000,
  796.  0x63CC,0x7383,0x0E38,0xE38E,0x0061,0xC707,
  797.  0x000E,0x7061,0xC700,0x1C38,0xE387,0x0000,
  798.  0x3018,0x71C7,0x0E38,0xE38E,0x00E1,0xC707,
  799.  0x000E,0x38E1,0xC700,0x1C38,0xE387,0x0000,
  800.  0x0FE0,0xF9F3,0xFF79,0xF7DF,0x007F,0xEF8F,
  801.  0x801F,0x3E7F,0xEF80,0x3E79,0xF7CF,0x8000
  802. };
  803.  
  804. struct Image NameImage =
  805. {
  806.  0,0,
  807.  177,11,
  808.  1,
  809.  &NameData[0],
  810.  0x1,0x0,
  811.  NULL
  812. };
  813.  
  814.  
  815.